class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int s_len = s.size();
        int p_len = p.size();
        if (s_len < p_len) {
            return {};
        }
        unordered_map<char,int> map;
        vector<int> res;
        for(int i=0;i<p_len;i++)
        {
            map[p[i]]++;
        }
        for(int left=0,right=0;right<s_len;right++){
            map[s[right]]--;
            while(map[s[right]]<0)
            {
                map[s[left]]++;
                left++;
            }
            if(right-left+1==p_len)
            {
                res.push_back(left);
            }
        }
        return res;
    }
};